#include <iostream>
using namespace std;

//声明范型类型
template <typename T, class Z>
decltype(T() + Z()) func(T x, Z y);		//auto

//定义
template <typename T, class Z>
decltype(T() + Z()) func(T x, Z y)
{
	return x * x + y * y;
}

/*
	定义一个模板函数，可以实现任意类型的数组排序.

	int string Fruit

	template <typename T>
	void mySort(T* data, int len, bool(*cmp)(T, T));
*/

int main(void)
{
	decltype(5) x = 100;
	cout << func(3,4) << endl;
	cout << func(1.1, 1.1) << endl;
	cout << func(3, 1.1) << endl;
	return 0;
}
